home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 3 / Gold Medal Software - Volume 3 (Gold Medal) (1994).iso / prog / ru04.arj / DISRES.PAS < prev    next >
Pascal/Delphi Source File  |  1994-02-10  |  2KB  |  107 lines

  1. (* ******************************************************************** *)
  2. (* disres.pas For Turbo Pascal - Demonstrates how to display XGF images *)
  3. (*                               inside a resource file.                *)
  4. (*                                                                      *)
  5. (* Use the Rastport to create resource files.                           *)
  6. (*                                                                      *)
  7. (* ******************************************************************** *)
  8.  
  9. Program disres;
  10.    uses crt,graph;
  11.  
  12.  
  13. {$F+}
  14. Function DetectVGA256 : integer;
  15. begin
  16.     DetectVGA256:=0;
  17. end;
  18. {$F-}
  19.  
  20. Procedure setVGA256;
  21. Var
  22.  gd,gm : Integer;
  23. begin
  24.  gd:=InstallUserDriver('svga256',@detectvga256);
  25.  gd:=Detect;
  26.  Initgraph(gd,gm,'');
  27. end;
  28.  
  29. Procedure setvga16;
  30. var
  31.  gd,gm : integer;
  32. begin
  33.  gd:=VGA;
  34.  gm:=VGALO;
  35.  
  36.  initgraph(gd, gm, '');
  37. end;
  38.  
  39. Procedure res_dis_xgf(x,y : integer; filename : string; ri : integer);
  40. var
  41.  F            : File;
  42.  width,height : integer;
  43.  bpl,i,error  : integer;
  44.  scanline     : array[1..1030] of integer;
  45.  rt           : integer;
  46.  rid          : array[1..12] of char;
  47.  offset,size  : longint;
  48.  
  49. begin
  50. {$I-}
  51.  Assign(F,filename);
  52.  Reset(F,1);
  53.  error:=IORESULT;
  54.  
  55.  if (error=0) then
  56.  begin
  57.    seek(F,(LongInt(5)+LongInt((ri-1))*Longint(22)));
  58.  
  59.    blockread(F,rt,2);             (* resource type          *)
  60.    blockread(F,rid,12);           (* resource id            *)
  61.    blockread(F,offset,4);         (* resource offset        *)
  62.    blockread(F,size,4);           (* resource size          *)
  63.  
  64.    seek(F,offset);
  65.    blockread(F,width,2);
  66.    blockread(F,height,2);
  67.  
  68.    scanline[1]:=width;
  69.    scanline[2]:=0;
  70.  
  71.    if (getmaxcolor=255) then
  72.    begin
  73.      bpl:=width+1;
  74.    end
  75.    else
  76.    begin
  77.      bpl:=imagesize(0,0,width,0)-6;
  78.    end;
  79.  
  80.    for i:=0 to (height-1) do
  81.    begin
  82.      blockread(F,scanline[3],bpl);
  83.      putimage(x,y+i,Ptr(seg(scanline),ofs(scanline))^,0);
  84.    end;
  85.  
  86.    close(F);
  87.  end;
  88. {$I-}
  89. end;
  90.  
  91. begin
  92.   setvga16;          (* replace with setvga256 for 256 color XGF files *)
  93.  
  94.   setfillstyle(solidfill,BLUE);
  95.   bar(0,0,getmaxx,getmaxy);
  96.  
  97.   res_dis_xgf(0,0,'pics.res',1);
  98.   res_dis_xgf(200,50,'pics.res',2);
  99.   res_dis_xgf(300,100,'pics.res',3);
  100.   res_dis_xgf(200,0,'pics.res',4);
  101.   res_dis_xgf(400,50,'pics.res',5);
  102.   res_dis_xgf(500,100,'pics.res',6);
  103.  
  104.   repeat until keypressed;
  105.   closegraph;
  106. end.
  107.